Lazy K
表示
パラダイム | 純粋関数型言語 |
---|---|
型付け | なし |
主な処理系 | lazy |
影響を受けた言語 | Unlambda |
ウェブサイト | [1] |
拡張子 |
.lazy |
Lazy K(れいじーけー)は組み込み関数が3つしかない、純粋関数型言語である。似た言語として、同じような表記をする、非純粋関数型言語であるUnlambdaがある。
概要
[編集]純粋関数型言語として、チューリング完全でありながら、絶対必要なエッセンスだけを抜き出したプログラミング言語である。遅延評価を行う。使用するにも、処理系を実装するにも、コンビネータ論理の知識が必要である。
標準入力をプログラムである関数の引数として受け取る。ただし、標準入力は1バイトごとのチャーチ数のスコットエンコードされたリストとしてエンコードされ、出力も同様に1バイトごとのチャーチ数のスコットエンコードされたリストとなる。
Lazy K にて Unlambda を実装した場合、Unlambda で Unlambda を実装した場合に比べて約1/10のソースサイズで収まる。
組み込み関数
[編集]Haskell の表記法を用いる。
I x = x
K x y = x
S x y z = (x z) (y z)
なお、I
は S
と K
を用いて I = SKK
と表せる。
Iota 記法では、i=λx.xSK=S(SI(KS))(KK)
を唯一の組み込み関数として使用する。
表記法
[編集]ソースコードの表記方法として、4種類用意されている。それらを混在させてコーディングすることができる。
- コンビネータ算法様式 -
SI(K(KI))
- Unlambda様式 -
``si`k`ki
- Iota様式
- Jot様式